package com.study.happystudy.service;

import com.study.happystudy.po.Post;
import com.study.happystudy.po.Reply;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PostsService {
    // 发布帖子
    void addPost(int authorId, List<String> tags, String title, String content, List<String> images);

    // 根据id返回帖子
    Post getPostById(@Param("postId") int postId);

    // 删除帖子
    void deletePostById(@Param("postId") int postId);

    // 根据用户id返回其所有帖子(发布时间排序)
    List<Post> getPostsByUserId(@Param("userId") int userId);

    // 根据帖子id返回帖子的所有回复(回复时间排序)
    List<Reply> getRepliesByPostId(@Param("postId") int postId);

    // 根据帖子标题、内容、用户昵称、用户账户号模糊匹配帖子
    List<Post> searchPosts(@Param("keyword") String keyword);

    // 用户对帖子点赞
    void likePost(@Param("userId") int userId, @Param("postId") int postId);

    // 用户对帖子取消点赞
    void unlikePost(@Param("userId") int userId, @Param("postId") int postId);

    // 用户对帖子回复
    void addReply(@Param("postId") int postId,
                  @Param("replierId") int replierId,
                  @Param("replyContent") String replyContent);

    // 用户对帖子回复点赞
    void likeReply(@Param("userId") int userId, @Param("replyId") int replyId);

    // 用户对帖子回复取消点赞
    void unlikeReply(@Param("userId") int userId, @Param("replyId") int replyId);
    boolean isUserLikePost(@Param("userId") int userId, @Param("postId") int postId);
    boolean isUserLikeReply(@Param("userId") int userId, @Param("replyId") int replyId);
    Reply getReplyById(@Param("replyId") int replyId);
}
